package com.first.computerstore.service;

import com.first.computerstore.dao.ProductMapper;
import com.first.computerstore.dao.UserMapper;
import com.first.computerstore.entity.Product;
import com.first.computerstore.entity.User;
import com.first.computerstore.query.PageInfoQuery;
import com.first.computerstore.utils.AssertUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

import java.util.List;


/**
 * @version 1.0
 * @date 2023/6/28
 */

@Service
public class ProductService {

    @Resource
    private ProductMapper productMapper;


    /**
     * 查询新到好货
     * @param pageInfoQuery
     * @return
     */
    public PageInfo<Product> queryByNewProductList (PageInfoQuery pageInfoQuery,Integer uid) {
        // 开启分页功能
        PageHelper.startPage(pageInfoQuery.getPageNum(),pageInfoQuery.getPageSize());
        // 调用持久层方法进行查询
        List<Product> products = productMapper.queryByNewProductList(uid);
        // 返回分页数据
        PageInfo<Product> pageInfo = new PageInfo<>(products);
        return pageInfo;
    }

    /**
     * 导航栏的热销排行
     * @param pageNum
     * @param pageSize
     * @return
     */
    public PageInfo<Product> hotProductList(Integer pageNum, Integer pageSize,Integer uid) {
        if (pageNum == null){
            pageNum =0;
        }
        if (pageSize == null){
            pageSize = 8;
        }
        PageHelper.startPage(pageNum,pageSize);
        List<Product> list = productMapper.hotProductList(uid);
        PageInfo<Product> pageInfo =new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 商品详情
     * @param pid
     * @return
     */
    public Product queryProductShow(Integer pid) {
        Product product = productMapper.queryProductByPid(pid);
        return product;
    }



    /**
     * 根据用户输入的商品名称模糊查询商品列表：
     * 一、使用pageHelper类的starPage方法开启分页，参数是pageNum和pageSize
     * 二、调用mapper层方法获取商品集合
     * 三、将商品集合作为参数，创建分页查询结果对象，即为分页后的商品查询列表
     * 四、返回分页商品列表
     *
     * @param pageNum
     * @param pageSize
     * @param title
     * @return
     */
    public PageInfo<Product> queryProductList(Integer pageNum,Integer pageSize,String title,Integer uid){
        //先开启分页
        PageHelper.startPage(pageNum,pageSize);

        //再从mapper层查询的商品集合
        List<Product> queryedList = productMapper.queryProductLikeName(uid,title);

        PageInfo<Product> pageInfo = new PageInfo<>(queryedList);

        return  pageInfo;
    }

    /**
     *  分页查询 新到好物
     * @return
     */
    public List<Product> queryNewProductByTime(){
        return productMapper.queryNewProductByTime();
    }

    //查询热销商品方法
    public List<Product> queryhotProduct(){
        //返回dao层数据库查询结果
        return productMapper.queryhotProduct();
    }


    /**
     * 根据商品id查询商品
     * @param pid
     * @return
     */
    public Product queryProductByPid(Integer pid) {
        AssertUtil.isTrue(null==pid,"商品id不能为空！");
        Product product = productMapper.queryProductByPid(pid);
        return product;
    }
}